package org.example.v2;

public class Main {
    public static void main(String[] args) {
        OrderStateMachine order = new OrderStateMachine();
        System.out.println(order); // 输出: 订单当前状态: PendingStateAction

        order.onEvent("pay");
        System.out.println(order); // 输出: 订单已支付。
        //       订单当前状态: PaidStateAction

        order.onEvent("ship");
        System.out.println(order); // 输出: 订单已发货。
        //       订单当前状态: ShippedStateAction

        order.onEvent("deliver");
        System.out.println(order); // 输出: 订单已交付。
        //       订单当前状态: DeliveredStateAction

        // 尝试在订单已交付后再进行状态变更
        order.onEvent("pay");
        System.out.println(order); // 输出: 订单已交付。无法执行进一步操作。
    }
}
